class Object{

public:
  char name[11];
  int  version;
  Object *self;
  char tag[10];

public:

	  Object(){

	  	version = 1 ;
	  	self = this;
	  	sprintf(name,"%X",(int)(Object*)this);
	  	strcpy(tag,"Object");
	  }

	

	///////////////////////
	 int hashCode(){


		return (int)&version;//&this;
	}

	 virtual char* toString(){

			 
			static char p[256]={0};
			sprintf(p,"Obj@%x",hashCode());
			
			
			return p;
	}

	boolean equals(Object obj){

		return hashCode() == obj.hashCode();
	}
	char* getType(){

 	return tag;
 	}

 	boolean operator == (Object obj){

			if(hashCode()==obj.hashCode()){

				return true;
			}else{

				return false;
			}

	}

};

